#ifndef __BSP_SHT2X_IIC_H__
#define __BSP_SHT2X_IIC_H__

#ifdef __cplusplus
extern "C"
{
#endif

//#define SHT2X_USE_HARD_I2C



#include "stm32g0xx_hal.h"
#include "global.h"

#define	 SHT2X_I2C_ADDR     0x80  //定义器件sht2x在IIC总线中的从地址
#define  HOLD_AT_START      0xE3  //触发温度测量
#define  HOLD_AH_START      0xE5  //触发湿度测量
#define  NO_HOLD_AT_START   0xF3  //触发温度测量
#define  NO_HOLD_AH_START   0xF5  //触发湿度测量
//#define  WRITE_REG      0xe6    //写寄存器
//#define  READ_REG       0xe7    //读寄存器
#define  SHT2X_REST         0xFE    //软件复位


#ifndef SHT2X_USE_HARD_I2C
/* 定义I2C总线连接的GPIO端口, 用户只需要修改下面6行代码即可任意改变SCL和SDA的引脚 */
#define SHT2X_SCL_RCC()             __HAL_RCC_GPIOA_CLK_ENABLE()
#define SHT2X_SCL_PIN		        GPIO_PIN_11			/* 连接到SCL时钟线的GPIO */
#define SHT2X_SCL_PORT              GPIOA

#define SHT2X_SDA_RCC()             __HAL_RCC_GPIOA_CLK_ENABLE()
#define SHT2X_SDA_PIN		        GPIO_PIN_12			/* 连接到SDA数据线的GPIO */
#define SHT2X_SDA_PORT              GPIOA


/* 定义读写SCL和SDA的宏 */
#define SHT2X_SCL_1()     HAL_GPIO_WritePin(SHT2X_SCL_PORT,SHT2X_SCL_PIN,GPIO_PIN_SET);				/* SCL = 1 */
#define SHT2X_SCL_0()     HAL_GPIO_WritePin(SHT2X_SCL_PORT,SHT2X_SCL_PIN,GPIO_PIN_RESET);			/* SCL = 0 */

#define SHT2X_SDA_1()     HAL_GPIO_WritePin(SHT2X_SDA_PORT,SHT2X_SDA_PIN,GPIO_PIN_SET);				/* SDA = 1 */
#define SHT2X_SDA_0()     HAL_GPIO_WritePin(SHT2X_SDA_PORT,SHT2X_SDA_PIN,GPIO_PIN_RESET);				/* SDA = 0 */

#define SHT2X_SCL_READ()  ((HAL_GPIO_ReadPin(SHT2X_SCL_PORT, SHT2X_SCL_PIN)) != 0)	/* 读SCL口线状态 */
#define SHT2X_SDA_READ()  ((HAL_GPIO_ReadPin(SHT2X_SDA_PORT, SHT2X_SDA_PIN)) != 0)	/* 读SDA口线状态 */

#define SHT2X_SDA_OUTPUTMODE()                                                /* 设置SDA为输出模式 */
#define SHT2X_SCL_OUTPUTMODE()                                                /* 设置SCL为输出模式 */

#define SHT2X_SDA_INPUTMODE()                                                 /* 设置SDA为输出模式 */
#define SHT2X_SCL_INPUTMODE()                                                 /* 设置SCL为输出模式 */

#endif



    /***********************************************
* 描述： SHTxx测量数据结果结构体
*/
typedef struct
{
    /***********************************************
    * 描述： SHTxx测量数据结果放大10倍之后的值（整型）
    */
    int16_t  iTemperature;
    uint16_t uiHumidity;
//    uint16_t DewPoint;
//    /***********************************************
//    * 描述： SHTxx测量数据结果（浮点型）
//    */
//    float fTemp;
//    float fHumi;
//    float fDewpoint;
}ShtValueTypeDef;




uint8_t bsp_Sht2xInit(void);
uint8_t bsp_Sht2xMeasure(ShtValueTypeDef *pshtval);


/**************************************************************************************************
**************************************************************************************************/

#ifdef __cplusplus
}
#endif

#endif